package com.youlai.boot.modules.tp.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * 每日销售报表实体
 * 
 * @author xiheforever
 * @since 2025-06-04
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("daily_sales_report")
public class DailySalesReport {

    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 报告日期
     */
    @TableField("report_date")
    private LocalDate reportDate;

    /**
     * 客单价
     */
    @TableField("average_transaction_value")
    private BigDecimal averageTransactionValue;

    /**
     * 转化率
     */
    @TableField("conversion_rate")
    private BigDecimal conversionRate;

    /**
     * 月度销售任务（元）
     */
    @TableField("monthly_sales_target")
    private BigDecimal monthlySalesTarget;

    /**
     * 目前已完成销售额（元）
     */
    @TableField("current_sales_amount")
    private BigDecimal currentSalesAmount;

    /**
     * 销售进度（%）
     */
    @TableField("sales_progress")
    private BigDecimal salesProgress;

    /**
     * 时间进度（%）
     */
    @TableField("time_progress")
    private BigDecimal timeProgress;

    /**
     * GMV同比变化（%）
     */
    @TableField("gmv_yoy_change")
    private BigDecimal gmvYoyChange;

    /**
     * 本月平均转化率
     */
    @TableField("avg_conversion_rate")
    private BigDecimal avgConversionRate;

    /**
     * 本月平均客单价
     */
    @TableField("avg_transaction_value")
    private BigDecimal avgTransactionValue;

    /**
     * 本月总销售数量（件）
     */
    @TableField("total_sales_quantity")
    private Integer totalSalesQuantity;

    /**
     * 创建时间
     */
    @TableField(value = "create_time", fill = FieldFill.INSERT)
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;

    /**
     * 删除标记(0:正常 1:删除)
     */
    @TableField("is_deleted")
    @TableLogic
    private Integer isDeleted;
} 